import { app, BrowserWindow } from 'electron'
import { ElectronLogger } from '@xmov/electron-extension'

// eslint-disable-next-line @typescript-eslint/no-var-requires
const { autoUpdater } = require('electron-updater')

export default function checkUpdate(win: BrowserWindow) {
  const serverUrl = ''
  ElectronLogger.info(`服务器资源地址：${serverUrl}`)
  if (!serverUrl) {
    return
  }
  win.webContents.send("update-start")

  // 打印版本更新详细日志
  autoUpdater.logger = ElectronLogger

  // useMultipleRangeRequest: false解决Content-Type报错
  autoUpdater.setFeedURL({
		provider: "generic",
		url: serverUrl,
		useMultipleRangeRequest: false,
	})

  // 关闭自动下载
	autoUpdater.autoDownload = false

  // 事件监听
  autoUpdater.on('error', (err: any) => {
    win.webContents.send("update-err", err)
    ElectronLogger.error('更新失败：', JSON.stringify(err))
  })
  autoUpdater.on('update-not-available', (res: any) => {
    win.webContents.send("update-end", res)
    ElectronLogger.info('当前版本为最新版本', JSON.stringify(res))
  })
  autoUpdater.on('update-available', () => {
    win.webContents.send('update-progress', { percent: 0.01 })
    ElectronLogger.info('发现新版本')

    // 检测到新版本开始下载，此处可以监听ipc判断是否更新，或者使用dialog弹窗
		autoUpdater.downloadUpdate()
  })
  autoUpdater.on('download-progress', (progressObj: any) => {
    win.webContents.send('update-progress', progressObj)
    ElectronLogger.info('更新包下载中：', JSON.stringify(progressObj))
  })
  autoUpdater.on('update-downloaded', (res: any) => {
    win.webContents.send("update-end", res)
    ElectronLogger.info('更新包下载完成', JSON.stringify(res))

    // quitAndInstall(是否静默安装，安装后打开应用)
    autoUpdater.quitAndInstall(false, true)
    app.quit()
  })

  // 检测更新
  autoUpdater.checkForUpdates()
}
